package com.softeem.god.utils;

import com.softeem.god.entity.Blacklist;

import java.util.*;
import java.util.concurrent.ThreadLocalRandom;

/**
 * 黑名单数据生成器工具类
 */
public class BlacklistDataGenerator {
    
    // 拉黑原因列表
    private static final List<String> REASONS = Arrays.asList(
        "违反社区规定",
        "发布不当内容",
        "恶意刷屏",
        "侵犯他人权益",
        "传播虚假信息",
        "恶意攻击他人",
        "频繁发布广告",
        "盗用他人作品",
        "恶意举报他人",
        "其他违规行为"
    );
    
    // 操作人列表
    private static final List<String> OPERATORS = Arrays.asList(
        "管理员",
        "超级管理员",
        "内容审核员",
        "系统自动处理"
    );
    
    /**
     * 生成随机黑名单数据
     * @param userId 用户ID
     * @return 黑名单实体
     */
    public static Blacklist generateRandomBlacklist(Integer userId) {
        Blacklist blacklist = new Blacklist();
        blacklist.setUserId(userId);
        
        // 随机选择拉黑原因
        int reasonIndex = ThreadLocalRandom.current().nextInt(REASONS.size());
        blacklist.setReason(REASONS.get(reasonIndex));
        
        // 设置创建时间为当前时间
        blacklist.setCreateTime(new Date());
        
        // 随机选择操作人
        int operatorIndex = ThreadLocalRandom.current().nextInt(OPERATORS.size());
        blacklist.setOperator(OPERATORS.get(operatorIndex));
        
        return blacklist;
    }
    
    /**
     * 生成指定数量的随机黑名单数据
     * @param userIds 用户ID列表
     * @param count 生成数量
     * @return 黑名单实体列表
     */
    public static List<Blacklist> generateRandomBlacklists(List<Integer> userIds, int count) {
        List<Blacklist> blacklists = new ArrayList<>();
        
        // 如果用户ID列表为空或数量为0，返回空列表
        if (userIds == null || userIds.isEmpty() || count <= 0) {
            return blacklists;
        }
        
        // 生成指定数量的随机黑名单数据
        for (int i = 0; i < count; i++) {
            // 随机选择一个用户ID
            int userIdIndex = ThreadLocalRandom.current().nextInt(userIds.size());
            Integer userId = userIds.get(userIdIndex);
            
            // 生成随机黑名单数据
            Blacklist blacklist = generateRandomBlacklist(userId);
            blacklists.add(blacklist);
        }
        
        return blacklists;
    }
}